package modele;

import java.util.SortedSet;

import java.rmi.Remote;

import com.healthmarketscience.rmiio.RemoteInputStream;

public interface Bd extends Remote {

    public Parcours getParcours(int ident) throws Exception;
    public SortedSet<Parcours> getParcours() throws Exception;
    public UniteEnseignement getUniteEnseignement(Integer ident) throws Exception;
    public UniteEnseignement getUniteEnseignement(String st) throws Exception;
    public SortedSet<UniteEnseignement> getUniteEnseignements() throws Exception;
    public SortedSet<Dossier> getDossiers() throws Exception;
    public SortedSet<Dossier> getDossiersRetenus() throws Exception;
    public void add(Dossier dos) throws Exception;
    public void add(Parcours opt) throws Exception;
    public void add(UniteEnseignement ue) throws Exception;
    public void remove(Dossier dos) throws Exception;
    public void remove(Parcours opt) throws Exception;
    public void remove(UniteEnseignement ue) throws Exception;
    public void addObligatoire(Parcours opt, UniteEnseignement ue) throws Exception;
    public void addChoix1(Parcours opt, UniteEnseignement ue) throws Exception;
    public void addChoix2(Parcours opt, UniteEnseignement ue) throws Exception;
    public void removeObligatoire(Parcours opt, UniteEnseignement ue) throws Exception;
    public void removeChoix1(Parcours opt, UniteEnseignement ue) throws Exception;
    public void removeChoix2(Parcours opt, UniteEnseignement ue) throws Exception;

    public void OpDossier(String id, Operation op) throws Exception;

    // les entrees
    public int importeListeApoflux(String filename) throws Exception;
    public int importeListeApoflux(RemoteInputStream inFile) throws Exception;
    
    // les sorties
    public RemoteInputStream getFile(String fileName) throws Exception;	//pour transférer les fichiers vers le client
    public String imprimer(Bd.Documents doc) throws Exception;
    public String imprimerEvalParcours(Parcours p) throws Exception;
    public void EnvoyerEmails(boolean premier) throws Exception;

    // sauvegarde et restauration
    public void Clear() throws Exception;
    public void Sauvegarde() throws Exception;
    
    public enum Operation{DELETE, REINIT_DOSSIER, AFFECTATION, NOUVELLE_AFFECTATION, RELANCE};
    public enum Documents{PARCOURS, PARCOURS_SYNTHESE, UEs_DETAILS, UEs_SYNTHESE, STATISTIQUES, EVALUATIONS, PROPOSITIONS, DEMANDES, COURRIERS, COURRIERS_SUIVANTS};
    
}
